package py.progweb.sgc.gui.server.service;

import java.util.List;

import javax.naming.NamingException;

import py.progweb.sgc.gui.client.service.*;
import py.progweb.sgc.gui.server.utils.EntityUtil;
import py.progweb.sgc.gui.shared.dialogmodel.*;
import py.progweb.sgc.manager.ABMManagerLocal;
import py.progweb.sgc.model.*;

public class DialogModelServiceImpl extends BaseServiceImpl implements DialogModelService {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L; 
	
	ABMManagerLocal mgr;
	
	public DialogModelServiceImpl() throws NamingException {
		this.mgr = (ABMManagerLocal)getBean("ABMManager");
	}

	@Override
	public GrupoReglasModel getGrupoReglasListadoModel() throws RemoteServiceException  {
		
		try {			
			
			logger.info("Retornando modelo para GrupoReglasListado");
	
			GrupoReglasModel m = new GrupoReglasModel();		
				
			List<GrupoRegla> grupos = (List<GrupoRegla>) mgr.buscar(GrupoRegla.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);
								
			m.setRecords(records);
			
			return m;
		}catch(Exception ex) {
			throw manejarError(ex);
		}
		
	}
	
	@Override
	public ClientesModel getClientesListadoModel() throws RemoteServiceException  {
		
		try {			
			
			logger.info("Retornando modelo para ClientesListado");
	
			ClientesModel m = new ClientesModel();		
				
			List<Cliente> clientes = (List<Cliente>) mgr.buscar(Cliente.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(clientes);
								
			m.setRecords(records);
			
			return m;
		}catch(Exception ex) {
			throw manejarError(ex);
		}
		
	}
	@Override
	public CajerosModel getCajerosListadoModel() throws RemoteServiceException  {
		
		try {			
			
			logger.info("Retornando modelo para CajerosListado");
	
			CajerosModel m = new CajerosModel();		
				
			List<Cajero> cajeros = (List<Cajero>) mgr.buscar(Cajero.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(cajeros);
								
			m.setRecords(records);
			
			return m;
		}catch(Exception ex) {
			throw manejarError(ex);
		}
		
	}
	@Override
	public VersionGrupoReglasModel getVersionGrupoReglasListadoModel() throws RemoteServiceException {
		try {			
			logger.info("Retornando modelo para VersionGrupoReglasListado");
			
			VersionGrupoReglasModel m = new VersionGrupoReglasModel();		
				
			List<GrupoRegla> grupos = (List<GrupoRegla>) mgr.buscar(VersionGrupoRegla.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);
								
			m.setRecords(records);
			
			return m;
		}catch(Exception ex) {
			throw manejarError(ex);
		}
		
	}

	@Override
	public ProveedoresModel getProveedoresListadoModel()
			throws RemoteServiceException {
		try {
			logger.info("Retornando modelo para ProveedoresListado");

			ProveedoresModel m = new ProveedoresModel();

			List<Proveedor> grupos = (List<Proveedor>) mgr.buscar(Proveedor.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);

			m.setRecords(records);

			return m;
		} catch (Exception ex) {
			throw manejarError(ex);
		}
	}
	
	@Override
	public ProductosModel getProductosListadoModel()throws RemoteServiceException {
		try {
			logger.info("Retornando modelo para ProductosListado");

			ProductosModel m = new ProductosModel();

			List<Producto> grupos = (List<Producto>) mgr.buscar(Producto.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);

			m.setRecords(records);

			return m;
		} catch (Exception ex) {
			throw manejarError(ex);
		}
	}
	
	@Override
	public CajasModel getCajasListadoModel()throws RemoteServiceException {
		try {
			logger.info("Retornando modelo para CajasListado");

			CajasModel m = new CajasModel();

			List<Caja> grupos = (List<Caja>) mgr.buscar(Caja.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);

			m.setRecords(records);

			return m;
		} catch (Exception ex) {
			throw manejarError(ex);
		}
	}
	
	@Override
	public CompradoresModel getCompradoresListadoModel()throws RemoteServiceException {
		try {
			logger.info("Retornando modelo para CompradoresListado");

			CompradoresModel m = new CompradoresModel();

			List<Comprador> grupos = (List<Comprador>) mgr.buscar(Comprador.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);

			m.setRecords(records);

			return m;
		} catch (Exception ex) {
			throw manejarError(ex);
		}
	}
	
	@Override
	public VendedoresModel getVendedoresListadoModel()throws RemoteServiceException {
		try {
			logger.info("Retornando modelo para VendedoresListado");

			VendedoresModel m = new VendedoresModel();

			List<Vendedor> grupos = (List<Vendedor>) mgr.buscar(Vendedor.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);

			m.setRecords(records);

			return m;
		} catch (Exception ex) {
			throw manejarError(ex);
		}
	}
	
	@Override
	public VentaDetallesModel getVentaDetallesListadoModel()throws RemoteServiceException {
		try {
			logger.info("Retornando modelo para VentaDetallesListado");

			VentaDetallesModel m = new VentaDetallesModel();

			List<VentaDetalle> grupos = (List<VentaDetalle>) mgr.buscar(VentaDetalle.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);

			m.setRecords(records);

			return m;
		} catch (Exception ex) {
			throw manejarError(ex);
		}
	}
	
	@Override
	public FacturasModel getFacturasListadoModel()throws RemoteServiceException {
		try {
			logger.info("Retornando modelo para FacturasListado");

			FacturasModel m = new FacturasModel();

			List<Factura> grupos = (List<Factura>) mgr.buscar(Factura.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);

			m.setRecords(records);

			return m;
		} catch (Exception ex) {
			throw manejarError(ex);
		}
	}
	
	@Override
	public VentasModel getVentasListadoModel()throws RemoteServiceException {
		try {
			logger.info("Retornando modelo para VentasListado");

			VentasModel m = new VentasModel();

			List<Venta> grupos = (List<Venta>) mgr.buscar(Venta.class);
			List<DataRecord> records = EntityUtil.entities2DataRecords(grupos);

			m.setRecords(records);

			return m;
		} catch (Exception ex) {
			throw manejarError(ex);
		}
	}
}


